
#include <ui.h>
/********************************************************
* Function name ：DefaultOnDraw
* Description : 在显示设备上绘制一个Button
* Parameter ：要绘制的Button结构体，要显示区域的ptDispBuffer结构体指针
* Return ：0 --success , other -- fail
**********************************************************/
static int DefaultOnDraw(struct Button *ptbutton , PDispBuffer ptDispBuffer)// 默认按钮的绘制
{
    DrawRegion(&ptbutton->tRegion,DEFAULT_BUTTON_COLOR);

    DrawTextInRegionCentral(ptbutton->name , &ptbutton->tRegion , TEXT_BUTTON_COLOR);

    FlashDisplayRegion(&ptbutton->tRegion , ptDispBuffer);

    return 0;
}

/********************************************************
* Function name ： DefaultOnPress
* Description : 按下按键的反应
* Parameter ：要绘制的Button结构体指针，要显示区域的ptDispBuffer结构体指针，输入时间的PInputEvent结构体指针
* Return ：0 --success , other -- fail
**********************************************************/
static int DefaultOnPress(struct Button *ptButton , PDispBuffer ptDispBuffer , PInputEvent ptInputEvent) // 默认的按钮处理
{
    unsigned int dwColor = DEFAULT_BUTTON_COLOR;
    ptButton->status = !ptButton->status;
    if(ptButton->status)
    {
        dwColor = PRESSED_BUTTON_COLOR;
    DrawRegion(&ptButton->tRegion,dwColor);

    DrawTextInRegionCentral(ptButton->name , &ptButton->tRegion , TEXT_BUTTON_COLOR);

    FlashDisplayRegion(&ptButton->tRegion , ptDispBuffer);
    }

    return 0;
}

/********************************************************
* Function name ： ButtonInit
* Description : 初始化按钮
* Parameter ：要初始化的Button结构体指针，按键的名字，按键的区域结构体指针PRegion，使用哪个绘制函数与按下函数
* Return ：0 --success , other -- fail
**********************************************************/
int ButtonInit (PButton ptButton , char *name , PRegion ptRegion , ONDRAW_FUNC OnDraw , ONPRESS_FUNC OnPress)
{// 把Button里的值初始化成后面的参数
    ptButton->name    = name;
    ptButton->status  = 0;
    if(ptRegion)
        ptButton->tRegion = *ptRegion;
    ptButton->OnDraw  = OnDraw ? OnDraw :  DefaultOnDraw; // OnDraw不为NULL,使用OnDraw，OnDraw为NULL,使用DefaultOnDraw
    ptButton->OnPress = OnPress ? OnPress :  DefaultOnPress; // OnPress不为NULL,使用OnPress，OnPress为NULL,使用DefaultOnPress
    return 0;
}